import os
from PIL import Image
import math



def aggregation():
    #存储图片路径的列表
    all_path = []
    num = 0

    # 合并后文件的大小
    width_max = 2000
    height_max = 3000

    # 添加图片路径到列表
    dirName = os.getcwd()
    filesName=dirName+'/image'
    print(filesName)
    for file in os.listdir(filesName):
        if "jpg" in file:
            all_path.append(os.path.join(filesName, file))
    # print(all_path,len(all_path))

    num_max=len(all_path) #列表中存储数据的数量

    # 根据数量确定行和列的数量
    a=math.ceil(math.sqrt(num_max))
    row_max=a
    line_max=a-math.floor((a*a-num_max)/a)
    print(row_max,line_max)

    # 根据行列数量确定每张图片的寛高
    width_i=width_max//row_max
    height_i=height_max//line_max
    pic_max=line_max*row_max

    #图片合成
    toImage = Image.new('RGBA',(width_max,height_max)) #填充的目标图片
    for i in range(0,line_max): 
        for j in range(0,row_max):
            pic_fole_head =  Image.open(all_path[num])
            # width,height =  pic_fole_head.size
            tmppic = pic_fole_head.resize((width_i,height_i)) #设置图片填入时的大小
            loc = (int(j%row_max*width_i),int(i%line_max*height_i)) #确定图片填入时的位置
            toImage.paste(tmppic,loc)
            num= num+1
            if num >= len(all_path):
                    print("break")
                    break
        if num >= pic_max:
            break
    for file in os.listdir(filesName):
        os.remove(filesName+'/'+file)
    toImage.save('merged.png')
